// service/pages/complaint/complaint.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    complaintTypes: [], // 投诉类型列表
    selectedType: '', // 选中的投诉类型
    selectedTypeId: '', // 选中的投诉类型ID
    description: '',
    name: '',
    phone: '',
    processingStatus: 1, // 处理状况，默认为1
    baseURL: 'http://localhost:8080' // 修改为正确的端口
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取投诉类型列表
    this.getComplaintTypes();
  },

  /**
   * 获取投诉类型列表
   */
  getComplaintTypes() {
    const that = this;
    wx.showLoading({
      title: '加载中...',
    });

    // 获取本地存储中的token
    const token = wx.getStorageSync('token');

    wx.request({
      url: `${this.data.baseURL}/system/complainttype/list`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${token}` // 添加认证token
      },
      success(res) {
        console.log('投诉类型列表数据:', res.data);
        if (res.data.code === 200 && res.data.rows) {
          that.setData({
            complaintTypes: res.data.rows
          });
        } else {
          wx.showToast({
            title: '获取投诉类型失败',
            icon: 'error'
          });
        }
      },
      fail(err) {
        console.error('获取投诉类型失败:', err);
        wx.showToast({
          title: '网络请求失败',
          icon: 'error'
        });
      },
      complete() {
        wx.hideLoading();
      }
    });
  },

  /**
   * 选择投诉类型
   */
  chooseComplaintType() {
    const that = this;
    const typeNames = this.data.complaintTypes.map(type => type.typeName);

    wx.showActionSheet({
      itemList: typeNames,
      success(res) {
        const selectedType = that.data.complaintTypes[res.tapIndex];
        that.setData({
          selectedType: selectedType.typeName,
          selectedTypeId: selectedType.id
        });
      }
    });
  },

  /**
   * 输入问题描述
   */
  inputDescription(e) {
    this.setData({
      description: e.detail.value
    });
  },

  /**
   * 输入姓名
   */
  inputName(e) {
    this.setData({
      name: e.detail.value
    });
  },

  /**
   * 输入手机号
   */
  inputPhone(e) {
    this.setData({
      phone: e.detail.value
    });
  },

  /**
   * 提交表单
   */
  submitForm() {
    const { selectedType, selectedTypeId, description, name, phone, processingStatus, baseURL } = this.data;

    // 表单验证
    if (!selectedType || !selectedTypeId) {
      wx.showToast({
        title: '请选择投诉类型',
        icon: 'none'
      });
      return;
    }

    if (!description) {
      wx.showToast({
        title: '请描述您的问题',
        icon: 'none'
      });
      return;
    }

    if (!name) {
      wx.showToast({
        title: '请输入姓名',
        icon: 'none'
      });
      return;
    }

    if (!phone) {
      wx.showToast({
        title: '请输入手机号',
        icon: 'none'
      });
      return;
    }

    // 手机号格式验证
    if (!/^1\d{10}$/.test(phone)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      });
      return;
    }

    // 准备提交数据
    const submitData = {
      complaintDetail: description,
      complaintName: name,
      phone: phone,
      complaintTypeId: selectedTypeId,
      complaintStatus: processingStatus,
      complaintTime: new Date().toISOString().slice(0, 19).replace('T', ' ')
    };

    console.log('提交投诉数据:', submitData);

    wx.showLoading({
      title: '提交中...',
    });

    // 获取本地存储中的token
    const token = wx.getStorageSync('token');

    wx.request({
      url: `${baseURL}/property/complaint/`,
      method: 'POST',
      header: {
        'Authorization': `Bearer ${token}` // 添加认证token
      },
      data: submitData,
      success(res) {
        console.log('投诉提交结果:', res.data);
        if (res.data.code === 200) {
          wx.showToast({
            title: '提交成功',
            icon: 'success',
            duration: 2000,
            success: () => {
              setTimeout(() => {
                wx.navigateBack();
              }, 2000);
            }
          });
        } else {
          wx.showToast({
            title: res.data.msg || '提交失败',
            icon: 'error'
          });
        }
      },
      fail(err) {
        console.error('提交投诉失败:', err);
        wx.showToast({
          title: '网络请求失败',
          icon: 'error'
        });
      },
      complete() {
        wx.hideLoading();
      }
    });
  },

  // 其他生命周期函数保持不变
  onReady() {},
  onShow() {},
  onHide() {},
  onUnload() {},
  onPullDownRefresh() {},
  onReachBottom() {},
  onShareAppMessage() {}
})